package com.truing.flycodebill.workbench.service;


import com.truing.flycodebill.workbench.domain.Bill;

import java.util.List;
import java.util.Map;

public interface BillService {

    /**
     *保存创建的账单
     *    接口名：saveCreateBill
     *    返回值：int
     *    形参：Bill bill
     *
     */
    int saveCreateBill(Bill bill);


    /**
     * 根据条件查询账单的列表
     *    接口名：selectBillByConditionForPage
     *    返回值：List<Bill>
     *    形参：Map<String,Object> map
     */
    List<Bill> selectBillByConditionForPage(Map<String,Object> map);


    /**
     * 根据条件查询账单的总条数
     *     接口名：selectCountOfBillByCondition
     *     返回值：int
     *     形参：Map<String,Object> map
     */
    int selectCountOfBillByCondition(Map<String,Object> map);


    /**
     * 根据id组成的数组删除对应的账单记录
     *     接口名：deleteBillByIds
     *     返回值：int
     *     形参：String[] ids
     *
     */
    int deleteBillByIds(String[] ids);


    /**
     * 根据id查询账单记录
     *     接口名：queryBillById
     *     返回值：Bill
     *     形参：String id
     *
     */
    Bill queryBillById(String id);


    /**
     * 保存修改的账单记录
     *     接口名：saveEditBill
     *     返回值：int
     *     形参：Bill bill
     */
    int saveEditBill(Bill bill);

    /**
     * 查询所有的的账单记录
     *     接口名：queryAllBills
     *     返回值：List<Bill>
     *     形参：String ownerId
     *
     */
    List<Bill> queryBillByOwnerId(String ownerId);

    /**
     * 根据id组成的数组查询账单
     *  接口名：queryBillByIds
     *  返回值：List<Bill>
     *  形参：String[] ids
     *
     */
    List<Bill> queryByIds(String[] ids);

    /**
     * 根据账单时间查询账单
     * @param map
     * @return
     */
    List<Bill> queryBillByBillTime(Map<String,Object> map);


    List<Bill> queryBillByBillTimeAndType(Map<String,Object> map);

    int queryCountOfBills();

    int queryCountOfBillsByTypeId(String typeId);

    List<Bill> queryTopFiveBills();

    List<Bill> queryBillsByTitle(String title);

    List<Bill> queryBillsByTypeId(Map<String,Object> map);

}
